/**
 * 存储相关的共享类型定义
 * 可在主进程和渲染进程中使用
 */

// 重新导出document类型,供主进程使用
export type { Content, ContentType, ContentStatus } from './document'

/**
 * 存储错误码
 */
export enum StorageErrorCode {
  NOT_FOUND = 'NOT_FOUND',
  QUOTA_EXCEEDED = 'QUOTA_EXCEEDED',
  PERMISSION_DENIED = 'PERMISSION_DENIED',
  INVALID_DATA = 'INVALID_DATA',
  SERIALIZATION_ERROR = 'SERIALIZATION_ERROR',
  DESERIALIZATION_ERROR = 'DESERIALIZATION_ERROR',
  UNKNOWN = 'UNKNOWN'
}

/**
 * 存储错误
 */
export interface StorageError {
  code: StorageErrorCode
  message: string
  cause?: unknown
}

/**
 * 存储结果(判别联合类型)
 */
export type StorageResult<T> =
  | { ok: true; data: T }
  | { ok: false; error: StorageError }

/**
 * 内容列表项(精简版,用于列表显示)
 */
export interface ContentListItem {
  id: string
  type: string
  title: string
  description?: string
  status: string
  tags: string[]
  updatedAt: Date
}
